﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Inventario_HardSoft.ADO;
using System.Windows.Forms;

namespace Inventario_HardSoft.Controlador
{
    class Ctrl_Reg_Sucursal
    {
        ConexionDataContext conexion;

        public Ctrl_Reg_Sucursal()
        {
            conexion = new ConexionDataContext();
        }

        internal void getListSucursal(System.Windows.Forms.DataGridView grib_Data)
        {
            List<SUCURSAL> listSucursal = conexion.SUCURSAL.Where(x => x.ELIMINADO == 0).OrderBy(x=>x.CIUDAD).ToList<SUCURSAL>();
            int i = 1;

            grib_Data.Rows.Clear();
            foreach (SUCURSAL s in listSucursal)
            {
                object[] obj = new object[] { i.ToString(), s.IDSUCURSAL, s.CIUDAD };
                grib_Data.Rows.Add(obj);
                i++;
            }
        }

        internal DialogResult registrarSucursal(SUCURSAL suc)
        {
            DialogResult result = DialogResult.Cancel;

            if (!this.verificar_NombreSucursal(suc.CIUDAD))
            {
                int idsuc = conexion.INVENTARIO_CONTADOR.Single(x => x.IDENTIFICADOR == "HARDSOFT").CONT_IDSUCURSAL.Value;
                string numero = Convert.ToString(idsuc);
                string numero2 = numero.Trim().PadLeft(5, '0');
                string idSucursal = "SUCR_" + numero2;

                suc.IDSUCURSAL = idSucursal;

                conexion.SUCURSAL.InsertOnSubmit(suc);
                conexion.SubmitChanges();
                conexion.increm_ContadorIdSucursal();
                result = DialogResult.OK;
            }
            else
            {
                result = DialogResult.Cancel;
            }

            return result;
        }

        private bool verificar_NombreSucursal(string sucursal)
        {
            bool value = conexion.SUCURSAL.Select(x => x.CIUDAD).Contains(sucursal);
            return value;
        }

        internal void getList_susSucursales(DataGridView dg, string p)
        {
            string idEmpresa = conexion.EMPRESA.Single(x => x.NOMBREEMPRESA == p).IDEMPRESA;

            var consulta = from exs in conexion.EMPRESAXSUCURSAL 
                            join e in conexion.EMPRESA on exs.IDEMPRESA equals e.IDEMPRESA
                            join s in conexion.SUCURSAL on exs.IDSUCURSAL equals s.IDSUCURSAL
                            where exs.IDEMPRESA == idEmpresa
                            select new
                            {
                                s.IDSUCURSAL,
                                s.CIUDAD 
                            };
            dg.Rows.Clear();
            foreach (var c in consulta)
            {
                object[] obj = new object[] { c.IDSUCURSAL,c.CIUDAD}; 
                dg.Rows.Add(obj);                 
            } 
        }

        internal List<string> ListSucursalesxEmpresa(string p)
        { 
            string idEmpresa = conexion.EMPRESA.Single(x => x.NOMBREEMPRESA == p).IDEMPRESA;
            var query = from exs in conexion.EMPRESAXSUCURSAL
                        join s in conexion.SUCURSAL on exs.IDSUCURSAL equals s.IDSUCURSAL
                        where exs.IDEMPRESA == idEmpresa
                        select s.CIUDAD;
            return query.ToList<string>();             
        }
    }
}
